八皇后问题,一维数组实现
#include "stdio.h" #include "math.h" int queen[11]={0},coun; void DFS(int num); int check(int p); int main() { coun=0; DFS(0); printf("%d\n",coun); return 0; } void DFS(int num) { int p; if(num==8) { coun++; return ; } for(p=0;p<8;p++) { queen[num]=p; //用一维数组存皇后摆放的位置 if(!check(num)) DFS(num+1); } return ; } int check(int num) { int i; for(i=0;i<num;i++) { if(fabs(queen[i]-queen[num])==fabs(num-i) || queen[i]==queen[num]) //遍历已摆放好的皇后,看两个皇后间是否会有冲突。 return 1; } return 0; }